# 文本嵌入模型

:::info

请前往[Integrations](/docs/integrations/text_embedding/)查看与文本嵌入模型提供商的内置集成文档。

:::

Embeddings类是一个专为与文本嵌入模型进行交互而设计的类。有许多嵌入模型提供商（如OpenAI、Cohere、Hugging Face等）- 这个类旨在为它们提供一个标准接口。

Embeddings类会为文本创建一个向量表示。这很有用，因为这意味着我们可以在向量空间中思考文本，并做一些类似语义搜索的事情，比如在向量空间中寻找最相似的文本片段。

LangChain中的基本Embeddings类提供了两种方法：一个用于嵌入文档，另一个用于嵌入查询。前者`.embed_documents`接受多个文本作为输入，而后者`.embed_query`接受单个文本。之所以将它们作为两个单独的方法，是因为一些嵌入提供商对文档（要搜索的文档）和查询（搜索查询本身）有不同的嵌入方法。

`.embed_query`将返回一个浮点数列表，而`.embed_documents`将返回一个浮点数列表的列表。

## 入门指南

### 设置

import Tabs from '@theme/Tabs';

import TabItem from '@theme/TabItem';

<Tabs>

  <TabItem value="openai" label="OpenAI" default>

首先，我们需要安装OpenAI合作伙伴包：

```bash
pip install langchain-openai
```

访问API需要一个API密钥，您可以通过创建帐户并转到[这里](https://platform.openai.com/account/api-keys)来获取它。一旦我们有了密钥，我们希望通过运行以下命令将其设置为环境变量：

```bash
export OPENAI_API_KEY="..."
```

如果您不想设置环境变量，可以在初始化OpenAI LLM类时通过`api_key`命名参数直接传递密钥：

```python
from langchain_openai import OpenAIEmbeddings
embeddings_model = OpenAIEmbeddings(api_key="...")
```

否则，您可以不带任何参数初始化：

```python
from langchain_openai import OpenAIEmbeddings
embeddings_model = OpenAIEmbeddings()
```

  </TabItem>

  <TabItem value="cohere" label="Cohere">

首先，我们需要安装Cohere SDK包：

```bash
pip install langchain-cohere
```

访问API需要一个API密钥，您可以通过创建帐户并转到[这里](https://dashboard.cohere.com/api-keys)来获取它。一旦我们有了密钥，我们希望通过运行以下命令将其设置为环境变量：

```shell
export COHERE_API_KEY="..."
```

如果您不想设置环境变量，可以在初始化Cohere LLM类时通过`cohere_api_key`命名参数直接传递密钥：

```python
from langchain_cohere import CohereEmbeddings
embeddings_model = CohereEmbeddings(cohere_api_key="...")
```

否则，您可以不带任何参数初始化：

```python
from langchain_cohere import CohereEmbeddings
embeddings_model = CohereEmbeddings()
```

  </TabItem>

</Tabs>

### `embed_documents`

#### 嵌入文本列表

使用`.embed_documents`来嵌入一个字符串列表，恢复一个嵌入列表：

```python
embeddings = embeddings_model.embed_documents(
    [
        "嗨！",
        "哦，你好！",
        "你叫什么名字？",
        "我的朋友们叫我World",
        "Hello World！"
    ]
)
len(embeddings), len(embeddings[0])
```

<CodeOutputBlock language="python">

```
(5, 1536)
```

</CodeOutputBlock>

### `embed_query`

#### 嵌入单个查询

使用`.embed_query`来嵌入单个文本片段（例如，用于与其他嵌入的文本片段进行比较）。

```python
embedded_query = embeddings_model.embed_query("对话中提到的名字是什么？")
embedded_query[:5]
```

<CodeOutputBlock language="python">

```
[0.0053587136790156364,
 -0.0004999046213924885,
 0.038883671164512634,
 -0.003001077566295862,
 -0.00900818221271038]
```

</CodeOutputBlock>